package top.lixunda.common.utils.alipay.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 订单支付参数
 *
 * @author lixunda
 * @version time:2020/3/2 12:47
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class AlipayDefaultParam {

    /**
     * 销售产品码
     *
     * @see AlipayDefaultParam#productCode
     */
    private static final String DEFAULT_PRODUCT_CODE = "FAST_INSTANT_TRADE_PAY";

    /**
     * 通知地址
     *
     * @see AlipayDefaultParam#notifyUrl
     */
    private static final String DEFAULT_NOTIFY_URL = "http://lixunda.top:2100/middle-goods/order_detail/payOrderNotifyCallback";

    /**
     * 系统商编号
     *
     * @see AlipayDefaultParam#sysServiceProviderId
     */
    private static final String DEFAULT_SYS_SERVICE_PROVIDER_ID = "2088511833207846";

    public AlipayDefaultParam() {
        this.setProductCode(DEFAULT_PRODUCT_CODE);
        this.setNotifyUrl(DEFAULT_NOTIFY_URL);
        this.setSysServiceProviderId(DEFAULT_SYS_SERVICE_PROVIDER_ID);
    }

    /**
     * 商户订单号,64个字符以内、可包含字母、数字、下划线；需保证在商户端不重复
     */
    private String outTradeNo;

    /**
     * 销售产品码，与支付宝签约的产品码名称。
     * 注：目前仅支持FAST_INSTANT_TRADE_PAY
     */
    private String productCode;

    /**
     * 订单总金额，单位为元，精确到小数点后两位，取值范围[0.01,100000000]。
     */
    private String totalAmount;

    /**
     * 订单标题
     */
    private String subject;

    /**
     * 订单描述
     */
    private String body;

    /**
     * 公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。
     * 支付宝只会在同步返回（包括跳转回商户网站）和异步通知时将该参数原样返回。
     * 本参数必须进行UrlEncode之后才可以发送给支付宝。
     */
    private String passbackParams;

    /**
     * extend_params
     * 系统商编号
     * 该参数作为系统商返佣数据提取的依据，请填写系统商签约协议的PID
     */
    private String sysServiceProviderId;

    /**
     * 通知地址
     */
    private String notifyUrl;

    /**
     * 返回地址
     */
    private String returnUrl;

}
